package com.ruoyi.inventory.service;

import java.util.List;
import com.ruoyi.inventory.domain.TWarehouseTransaction;

/**
 * 出入库单(头)Service接口
 * 
 * @author ruoyi
 * @date 2025-09-24
 */
public interface ITWarehouseTransactionService 
{
    /**
     * 查询出入库单(头)
     * 
     * @param txNo 出入库单(头)主键
     * @return 出入库单(头)
     */
    public TWarehouseTransaction selectTWarehouseTransactionByTxNo(String txNo);

    /**
     * 查询出入库单(头)列表
     * 
     * @param tWarehouseTransaction 出入库单(头)
     * @return 出入库单(头)集合
     */
    public List<TWarehouseTransaction> selectTWarehouseTransactionList(TWarehouseTransaction tWarehouseTransaction);

    /**
     * 查询出入库单(头)DTO列表
     * 
     * @param tWarehouseTransaction 出入库单(头)
     * @return 出入库单(头)DTO集合
     */
    public List<com.ruoyi.inventory.domain.dto.TWarehouseTransactionDTO> selectTWarehouseTransactionDTOList(TWarehouseTransaction tWarehouseTransaction);

    /**
     * 新增出入库单(头)
     * 
     * @param tWarehouseTransaction 出入库单(头)
     * @return 结果
     */
    public int insertTWarehouseTransaction(TWarehouseTransaction tWarehouseTransaction);

    /**
     * 修改出入库单(头)
     * 
     * @param tWarehouseTransaction 出入库单(头)
     * @return 结果
     */
    public int updateTWarehouseTransaction(TWarehouseTransaction tWarehouseTransaction);

    /**
     * 批量删除出入库单(头)
     * 
     * @param txNos 需要删除的出入库单(头)主键集合
     * @return 结果
     */
    public int deleteTWarehouseTransactionByTxNos(String[] txNos);

    /**
     * 删除出入库单(头)信息
     * 
     * @param txNo 出入库单(头)主键
     * @return 结果
     */
    public int deleteTWarehouseTransactionByTxNo(String txNo);

    /**
     * 新增完整的出入库单（包括明细和库存更新）
     * 
     * @param tWarehouseTransaction 出入库单(头)
     * @param partList 备件列表
     * @return 结果
     */
    public int insertCompleteTransaction(TWarehouseTransaction tWarehouseTransaction, List<Object> partList);
}